1. Field of the Invention
The present invention relates generally to data/image processing/outputting, and in particular, to a method, apparatus, system, and article of manufacture for generating a rendering of a point cloud on a graphics processing unit (GPU).
2. Description of the Related Art
(Note: This application references a number of different publications as indicated throughout the specification by reference names enclosed in brackets, e.g., [x]. A list of these different publications ordered according to these reference names can be found below in the section entitled “References.” Each of these publications is incorporated by reference herein.)
When attempting to render billions of points in real-time, the bottleneck is to figure out which points are relevant for the screen space representation. Loading all of the points and overwriting the render buffer for every improved/better point results in a far from real-time performance. With points, there is little information that can help determine if it's relevant for screen space or not. A point cloud is entirely see-through because it does not represent a volume. For example, when rendering the point cloud, if one zooms in, the points may not fill up the display, and empty space may appear (i.e., one can see empty areas in between the points). Prior art systems may provide a slider control that allows the user to adjust the size of the points thereby filling in more/less space. However, if some point cloud areas are sparse and others are dense, there is no single setting that is visually appealing in both cases. To better understand such problems, a description of point clouds and prior art approaches may be useful.
Point clouds are often created by reality capture devices such as three-dimensional (3D) laser scanners that measure a large number of points (e.g., from thousands to many billions of points [3D coordinates]) on the surface of an object, and output a point cloud as a data file. The point cloud represents the visible surface of the object that has been scanned or digitized. With the increased usage of such reality capture devices, large point cloud data sets are more frequently created for consumption by design applications. Further, point cloud visualization and applications are increasingly important in design, especially due to the decrease in the price point of the technology.
Prior art methods may attempt to automatically determine how large to make points so that they fill in screen/space in a pleasing way. Most prior art approaches use the density of points in clusters to determine how large points should be rendered, and utilize a surface normal (that determines a direction that a surface is facing for each point in the point cloud) to orient the points to allow for more variation on one axis (when it is dense) and less variation along alternative axes (that are less dense). However, such prior art systems fail to provide a capability to quickly and efficiently render dynamic shapes in a visually appealing manner.
[Rusinkiewicz] generates oriented ellipses based on surface normals, and also vary the point size based on the level of detail (LOD) of the data. However, this LOD is determined by traversing a tree of nodes. Further, [Rusinkiewicz] generates their ellipse geometry on the central processing unit (CPU), meaning that they have to load an array of points from disk, expand them into geometric primitives (e.g., triangle strips), and then stream that complex geometry to the GPU (graphics processing unit) for rendering.
[Sainz] calculates ellipses from the point cloud, but assumes that each point is the same size in screen space. Similarly, [Pajarola] generates ellipses for different levels of detail, but does not mention any dynamic size calculations.
[Pintus] utilizes an image-based approach, where all points are rendered, and then the gaps are filled in the final image. This requires a second rendering pass that must check neighborhoods of the final image, so it will have some potential performance drawbacks, depending on the resolution of the final image.
In addition to the above, various other prior art applications may vary the size of points based on density and distance but do not change the shape of the point based on surface normal, or alternatively may require a constant point size (e.g., attached to a user control) with constant shapes.
In view of the above, one may note that the prior art fails to provide the ability to efficiently render a point cloud in a visually appealing manner regardless of the zoom-level.